const ApiClient = require('./apiClient');

async function runTests() {
  // 创建客户端实例
  const client = new ApiClient();

  try {
    // 测试1: 登录
    console.log('--- 测试登录 ---');
    await client.login('testuser');

    // 测试2: 访问公共API
    console.log('\n--- 测试访问公共API ---');
    const publicData = await client.get('/api/public');
    console.log('Public API response:', publicData);

    // 测试3: 访问受保护的API
    console.log('\n--- 测试访问受保护的API ---');
    try {
      const service1Data = await client.get('/api/service1');
      console.log('Service 1 API response:', service1Data);
    } catch (error) {
      // 如果后端服务未启动，这里会报错，这是预期的
      console.log('注意: 访问service1可能失败，因为后端服务可能未启动');
    }

    // 测试4: 建立WebSocket连接
    console.log('\n--- 测试WebSocket连接 ---');
    try {
      const ws = client.connectWebSocket('/ws/service1',
        (message) => {
          // 收到消息的处理逻辑
          console.log('处理WebSocket消息:', message);
        },
        (code, reason) => {
          // 连接关闭的处理逻辑
          console.log(`WebSocket连接关闭: ${code} ${reason}`);
        },
        (error) => {
          // 错误处理逻辑
          console.error('WebSocket错误:', error);
        }
      );

      // 发送WebSocket消息
      setTimeout(() => {
        if (ws && ws.readyState === WebSocket.OPEN) {
          ws.send('Hello from client');
          console.log('已发送WebSocket消息: Hello from client');
        }
      }, 1000);

      // 5秒后关闭WebSocket连接
      setTimeout(() => {
        if (ws) {
          ws.close();
        }
      }, 5000);
    } catch (error) {
      // 如果后端WebSocket服务未启动，这里会报错，这是预期的
      console.log('注意: WebSocket连接可能失败，因为后端服务可能未启动');
    }

  } catch (error) {
    console.error('测试失败:', error);
  }
}

// 运行测试
runTests();